package homework.module2;

/**
 * 测试类的流程如下：
 * 1.创建用户消费对象
 * 2.创建通话套餐对象
 * 3.创建上网套餐对象
 * 4.创建手机卡类
 * 5.创建的对象中对应的特征赋予手机卡类
 * 6.输出手机卡类的信息
 */
public class ExtendTest {

    // 作业三代码测试类
    public static void main(String[] args) {

        // 1.创建用户消费对象
        UserCostInfo user = new UserCostInfo();

        // 2.创建通话套餐对象
        // 父类获取子类对象，调用子类方法
        AbstractSet callSet = new CallSet();
        callSet.costPerMonth = 50;

        // 通话套餐类初始化，
        // 由于编译前默认调用父类成员，但是父类没有这些成员变量，强制转换成子类
        ((CallSet) callSet).callTime = 100;
        ((CallSet) callSet).messageNum = 100;

        // 3.创建上网套餐对象
        // 网络套餐类初始化
        AbstractSet netSet = new NetSet();
        netSet.costPerMonth = 100;
        ((NetSet) netSet).streamNum = 100;

        // 上网套餐以及通话套餐属于用户消费信息类的成员变量，新建用户消费信息类
        UserCostInfo userInfo = new UserCostInfo();
        userInfo.callSet = (CallSet) callSet;
        userInfo.netSet = (NetSet) netSet;
        userInfo.callSet.show();
        userInfo.netSet.show();
        userInfo.costPerMonth = userInfo.callSet.costPerMonth + userInfo.netSet.costPerMonth;  // 每月花费金额

        // 4.创建手机卡类
        SimCard simcard = new SimCard();
        simcard.setSimCard(CardType.MICRO);
        simcard.setUserName("ysf");
        simcard.setPassword("123456");
        simcard.setPhoneNumber("15210916541");
        simcard.setRemaining(50);
        simcard.setCallTime(userInfo.callSet.callTime);
        simcard.setStreamNum(userInfo.netSet.streamNum);

        // 打印通话信息
        ((CallSet) callSet).show(simcard.getCallTime(), simcard);

        // 打印上网信息
        ((NetSet) netSet).show(simcard.getCallTime(), simcard);

        System.out.println("用户每个月的消费(通话+上网):" + userInfo.costPerMonth);
    }

}
